package com.example.reflectiondemo;

import java.lang.reflect.Field;

/**
 * @program my-project-model
 * @description:
 * @author: lee
 * @create: 2022/09/23 17:13
 */
public class ReflectUtil {
    /**
     * 获得名为field的字段
     *
     * @param object
     * @param fieldName
     * @return Field
     * @Description:如果本身找不到去父类寻找
     * @author luhao
     * @since：2019年2月26日 下午4:06:16
     */
    public static Field getDeclaredField(Object object, String fieldName) {
        Field field = null;
        Class<?> clazz = object.getClass();

        for (; clazz != Object.class; clazz = clazz.getSuperclass()) {
            try {
                field = clazz.getDeclaredField(fieldName);

                return field;
            } catch (Exception e) {
                //这里甚么都不要做！并且这里的异常必须这样写，不能抛出去。
                //如果这里的异常打印或者往外抛，则就不会执行clazz = clazz.getSuperclass(),最后就不会进入到父类中了
            }
        }
        return null;
    }

}
